//乘累加器MAC
//时间:2022年8月2日
//制作者：FPGA研究者

module mac(out,opa,opb,clk,clr);
    input clk,clr;
	 input [7:0] opa,opb;
	 output reg[15:0]  out;
	 wire [15:0] sum;
 function [15:0] mult;
     input [7:0] opa,opb;
	  reg [15:0] result;
	  integer i; 
	  begin 
	   result=opa[0]?opb:0;
	  for(i=0;i<7;i=i+1)
	  begin if(opa[i]) result=result+(opb<<i);end
	  mult=result;
	  end
	  endfunction
	   
	assign sum=mult(opa,opb)+out; 
	always@(posedge clk or posedge clr) 
	 begin if(clr) out<=0;
	       else out<=sum;
	 end
endmodule
	